feat(usage): fold preview model IDs into the model they belong to - #15333
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 🧰 Additional context used📚 Code guidelines (2)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (14)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe change adds model aliases to server settings and the usage editor. Usage aggregation resolves alias chains and attributes mapped records to their target model for bucketing and pricing. Alias updates are sent with price changes and affect usage scan settings. ChangesUsage model aliases
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant UsagePriceOverrides
participant writeUsagePrices
participant applyServerSettingsPatch
participant UsageService
participant UsageAggregator
UsagePriceOverrides->>writeUsagePrices: Submit alias and price changes
writeUsagePrices->>applyServerSettingsPatch: Send combined settings patch
UsageService->>UsageAggregator: Pass resolved model aliases
UsageAggregator->>UsageAggregator: Map records for aggregation and pricing
Suggested reviewers: Merge Risk: ⚪ Minimal · up to This change adds model mappings to usage reporting and pricing. No merge-blocking risk is evident from the supplied context. 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description explains the problem and change, and includes before-and-after screenshots. It does not provide the required scope and approval information or describe focused verification and its results. Resolution Add the triaged issue or maintainer approval for the scope. If this is a small, focused fix that qualifies for an exception, explain why. Add the focused tests or manual checks performed and their results, and state anything that could not be checked. Full details: Docstring CoverageExplanation Docstring coverage is 45.45% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 13 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds per-environment model aliasing and changes how existing usage records are bucketed, priced, and displayed, including historical results. The behavior spans persisted settings, server aggregation, cache invalidation, compatibility handling, and a new UI workflow. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Brings in the 4 commits that landed during verification (pingdotgg#15330, pingdotgg#15333, pingdotgg#15324, pingdotgg#15346). No conflicts; docs/user/usage.md auto-merged with the Limits section intact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
## What's Changed * feat(web): Nightly tells you to get the beta mobile app by @t3dotgg in pingdotgg/t3code#15070 * test(server): ACP adapter tests no longer race the prompt settle by @t3dotgg in pingdotgg/t3code#15330 * feat(usage): fold preview model IDs into the model they belong to by @t3dotgg in pingdotgg/t3code#15333 * refactor(server): check RPC scopes in group middleware by @juliusmarminge in pingdotgg/t3code#15324 * feat(mobile): beta Working section hides busy threads until they need you by @t3dotgg in pingdotgg/t3code#15346 * fix(settings): symlinked settings files stay linked when saved by @yordis in pingdotgg/t3code#15009 * fix(server): Stop ends a dev server left running before a provider switch by @t3dotgg in pingdotgg/t3code#15355 * fix(server): merged threads settle even after the agent wakes on its own by @t3dotgg in pingdotgg/t3code#15388 * fix(web): no-project drafts can switch machines by @maria-rcks in pingdotgg/t3code#15356 * fix(web): highlight tool inputs and remove nested work log indentation by @Yash-Singh1 in pingdotgg/t3code#15384 * fix(server): restarts keep delegated tasks, queued threads, and stops intact by @maria-rcks in pingdotgg/t3code#15323 * fix(web): sending past the resume banner compacts first by @maria-rcks in pingdotgg/t3code#15290 * fix(codex): resume archived native sessions by @maria-rcks in pingdotgg/t3code#15389 * feat(web): morph composer and panel action icons by @jakeleventhal in pingdotgg/t3code#14924 * fix(web): subagents sent a follow-up show as running in Lineage by @scratchyone in pingdotgg/t3code#15334 * fix(web): clear stale chat action shortcuts by @maria-rcks in pingdotgg/t3code#15394 * fix(orchestration-v2): restore earlier app agent transcript pages by @Bil0000 in pingdotgg/t3code#14104 * fix(web): remove the square thread info panel shadow by @PixPMusic in pingdotgg/t3code#15069 * fix(mobile): Android usage widget no longer sticks on "Loading widget" in release builds by @tris203 in pingdotgg/t3code#15142 * fix(web): size the model picker to its content by @saphid in pingdotgg/t3code#15152 * test(server): replay checks a Claude subagent's thread takes its reported model by @juliusmarminge in pingdotgg/t3code#15022 * fix(web): subagent finish notifications look like subagent cards by @flamboh in pingdotgg/t3code#15281 * fix(web): thread status dot has an accessible name by @ryanilano in pingdotgg/t3code#14587 * fix(web): legacy sidebar options button has a label by @ryanilano in pingdotgg/t3code#14602 * fix(web): imported themes keep switches and focus rings visible by @flamboh in pingdotgg/t3code#14498 * fix(web): links to issues no longer strand the pull request viewer by @flamboh in pingdotgg/t3code#14242 * fix(web): repo/task breadcrumb no longer bounces when the sidebar collapses by @flamboh in pingdotgg/t3code#15046 * fix(web): Pull request panel entry works for linked PRs by @flamboh in pingdotgg/t3code#15061 * fix(web): add context menu to draft threads in the sidebar by @flamboh in pingdotgg/t3code#10637 * fix(web): keep sidebar branding and build pills from clipping at varying font sizes and zoom levels by @flamboh in pingdotgg/t3code#12141 * fix(usage): model shares and order follow the selected metric by @flamboh in pingdotgg/t3code#11391 * feat(web): sweep sidebar buttons to settle, un-settle, and wake threads by @argofowl in pingdotgg/t3code#14768 * feat: retry a failed workspace preparation by @juliusmarminge in pingdotgg/t3code#15326 ## New Contributors * @argofowl made their first contribution in pingdotgg/t3code#14768 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261003.2638...v0.0.46-nightly.20261004.2644 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261004.2644
## What's Changed * feat(web): Nightly tells you to get the beta mobile app by @t3dotgg in pingdotgg/t3code#15070 * test(server): ACP adapter tests no longer race the prompt settle by @t3dotgg in pingdotgg/t3code#15330 * feat(usage): fold preview model IDs into the model they belong to by @t3dotgg in pingdotgg/t3code#15333 * refactor(server): check RPC scopes in group middleware by @juliusmarminge in pingdotgg/t3code#15324 * feat(mobile): beta Working section hides busy threads until they need you by @t3dotgg in pingdotgg/t3code#15346 * fix(settings): symlinked settings files stay linked when saved by @yordis in pingdotgg/t3code#15009 * fix(server): Stop ends a dev server left running before a provider switch by @t3dotgg in pingdotgg/t3code#15355 * fix(server): merged threads settle even after the agent wakes on its own by @t3dotgg in pingdotgg/t3code#15388 * fix(web): no-project drafts can switch machines by @maria-rcks in pingdotgg/t3code#15356 * fix(web): highlight tool inputs and remove nested work log indentation by @Yash-Singh1 in pingdotgg/t3code#15384 * fix(server): restarts keep delegated tasks, queued threads, and stops intact by @maria-rcks in pingdotgg/t3code#15323 * fix(web): sending past the resume banner compacts first by @maria-rcks in pingdotgg/t3code#15290 * fix(codex): resume archived native sessions by @maria-rcks in pingdotgg/t3code#15389 * feat(web): morph composer and panel action icons by @jakeleventhal in pingdotgg/t3code#14924 * fix(web): subagents sent a follow-up show as running in Lineage by @scratchyone in pingdotgg/t3code#15334 * fix(web): clear stale chat action shortcuts by @maria-rcks in pingdotgg/t3code#15394 * fix(orchestration-v2): restore earlier app agent transcript pages by @Bil0000 in pingdotgg/t3code#14104 * fix(web): remove the square thread info panel shadow by @PixPMusic in pingdotgg/t3code#15069 * fix(mobile): Android usage widget no longer sticks on "Loading widget" in release builds by @tris203 in pingdotgg/t3code#15142 * fix(web): size the model picker to its content by @saphid in pingdotgg/t3code#15152 * test(server): replay checks a Claude subagent's thread takes its reported model by @juliusmarminge in pingdotgg/t3code#15022 * fix(web): subagent finish notifications look like subagent cards by @flamboh in pingdotgg/t3code#15281 * fix(web): thread status dot has an accessible name by @ryanilano in pingdotgg/t3code#14587 * fix(web): legacy sidebar options button has a label by @ryanilano in pingdotgg/t3code#14602 * fix(web): imported themes keep switches and focus rings visible by @flamboh in pingdotgg/t3code#14498 * fix(web): links to issues no longer strand the pull request viewer by @flamboh in pingdotgg/t3code#14242 * fix(web): repo/task breadcrumb no longer bounces when the sidebar collapses by @flamboh in pingdotgg/t3code#15046 * fix(web): Pull request panel entry works for linked PRs by @flamboh in pingdotgg/t3code#15061 * fix(web): add context menu to draft threads in the sidebar by @flamboh in pingdotgg/t3code#10637 * fix(web): keep sidebar branding and build pills from clipping at varying font sizes and zoom levels by @flamboh in pingdotgg/t3code#12141 * fix(usage): model shares and order follow the selected metric by @flamboh in pingdotgg/t3code#11391 * feat(web): sweep sidebar buttons to settle, un-settle, and wake threads by @argofowl in pingdotgg/t3code#14768 * feat: retry a failed workspace preparation by @juliusmarminge in pingdotgg/t3code#15326 ## New Contributors * @argofowl made their first contribution in pingdotgg/t3code#14768 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261003.2638...v0.0.46-nightly.20261004.2644 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261004.2644
A preview model shows up on Usage as its own row, as if it were a released model. The only fix was to type in every rate by hand. Variant IDs such as
claude-sonnet-5-5[1m]also split one model into two rows.Now Model prices has a Map to column. Map
example-previewtoclaude-opus-5-5and the preview ID disappears from Usage. Its tokens and cost fold intoclaude-opus-5-5and use that model's price. To split it out again, clear Map to or reset the row.How it works:
usageModelAliasessetting stores the mappings, the same way custom prices are stored.The screenshots use made-up transcripts in an isolated home.
Created with Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code